#ifndef __core_const_h__
#define __core_const_h__

namespace core
{

    /*
     * @brief: window property name.
     */
    extern const char* COMMON_CONTROL_PROPERTY_ID;
    extern const char* COMMON_CONTROL_PROPERTY_VISIBLE;
    extern const char* COMMON_CONTROL_PROPERTY_TITLE;
    extern const char* COMMON_CONTROL_PROPERTY_TABSTOP;
    extern const char* COMMON_CONTROL_PROPERTY_ZINDEX;
    extern const char* COMMON_CONTROL_PROPERTY_ALPHA;
    extern const char* COMMON_CONTROL_PROPERTY_DRAG;

    /*
     * @brief: style property name.
     */
    extern const char* STYLE_PROPERTY_BACKGROUND;
    extern const char* STYLE_PROPERTY_BACKGROUND_COLOR;
    extern const char* STYLE_PROPERTY_BACKGROUND_IMAGE;
    extern const char* STYLE_PROPERTY_BACKGROUND_REPEAT;
    extern const char* STYLE_PROPERTY_COLOR;
    extern const char* STYLE_PROPERTY_LINE_HEIGHT;
    extern const char* STYLE_PROPERTY_HORIZONTAL_ALIGN;
    extern const char* STYLE_PROPERTY_VERTICAL_ALIGN;
    extern const char* STYLE_PROPERTY_TEXT_ALIGN;
    extern const char* STYLE_PROPERTY_UNDERLINE;
    extern const char* STYLE_PROPERTY_TEXT_INDENT;
    extern const char* STYLE_PROPERTY_FONT;
    extern const char* STYLE_PROPERTY_FONT_FAMILY;
    extern const char* STYLE_PROPERTY_FONT_SIZE;
    extern const char* STYLE_PROPERTY_FONT_STYLE;
    extern const char* STYLE_PROPERTY_BORDER;
    extern const char* STYLE_PROPERTY_BORDER_WIDTH;
    extern const char* STYLE_PROPERTY_BORDER_STYLE;
    extern const char* STYLE_PROPERTY_BORDER_COLOR;
    extern const char* STYLE_PROPERTY_POSITION;
    extern const char* STYLE_PROPERTY_MARGIN;
    extern const char* STYLE_PROPERTY_MARGIN_LEFT;
    extern const char* STYLE_PROPERTY_MARGIN_TOP;
    extern const char* STYLE_PROPERTY_MARGIN_RIGHT;
    extern const char* STYLE_PROPERTY_MARGIN_BOTTOM;
    extern const char* STYLE_PROPERTY_PADDING;
    extern const char* STYLE_PROPERTY_PADDING_LEFT;
    extern const char* STYLE_PROPERTY_PADDING_TOP;
    extern const char* STYLE_PROPERTY_PADDING_RIGHT;
    extern const char* STYLE_PROPERTY_PADDING_BOTTOM;
    extern const char* STYLE_PROPERTY_LEFT;
    extern const char* STYLE_PROPERTY_TOP;
    extern const char* STYLE_PROPERTY_RIGHT;
    extern const char* STYLE_PROPERTY_BOTTOM;
    extern const char* STYLE_PROPERTY_WIDTH;
    extern const char* STYLE_PROPERTY_HEIGHT;
    extern const char* STYLE_PROPERTY_CURSOR;

    /*
     * @brief: attribute trait
     */
    enum
    {
        ATTRIBUTE_TRAIT_NULL        = 0x00000000,
        ATTRIBUTE_TRAIT_LAYOUT      = 0x00000001,
        ATTRIBUTE_TRAIT_PAINT       = 0x00000002,
        ATTRIBUTE_TRAIT_BOTH        = ATTRIBUTE_TRAIT_LAYOUT | ATTRIBUTE_TRAIT_PAINT
    };

    /*
     * @brief: background repeat
     */
    enum
    {
        BACKGROUND_REPEAT_NULL    = 0x00000000,
        BACKGROUND_REPEAT_X       = 0x00000001,
        BACKGROUND_REPEAT_Y       = 0x00000002
    };

    /*
     * @brief: position type
     */
    enum
    {
        POSITION_ABSOLUTE        = 0x00000001,
        POSITION_RELATIVE        = 0x00000002
    };


    /*
     * @brief: alignment
     */
    enum
    {
        ALIGNMENT_UNDEFINE            = 0x00000000,

        HORIZONTAL_ALIGNMENT_LEFT     = 0x00000001,
        HORIZONTAL_ALIGNMENT_CENTER   = 0x00000002,
        HORIZONTAL_ALIGNMENT_RIGHT    = 0x00000004,

        VERTICAL_ALIGNMENT_TOP        = 0x00000010,
        VERTICAL_ALIGNMENT_MIDDLE     = 0x00000020,
        VERTICAL_ALIGNMENT_BOTTOM     = 0x00000040
    };

    /*
     * @brief: font style
     */
    enum
    {
        FONT_STYLE_NORMAL         = 0x00000000,
        FONT_STYLE_BOLD           = 0x00000001,
        FONT_STYLE_ITALIC         = 0x00000002,
        FONT_STYLE_BOLD_ITALIC    = 0x00000003,
        FONT_STYLE_UNDERLINE      = 0x00000004
    };

    /*
     * @brief: border style
     */
    enum
    {
        BORDER_STYLE_SOLID        = 0x00000001,
        BORDER_STYLE_DASHED       = 0x00000002,
        BORDER_STYLE_DOTTED       = 0x00000004
    };

    /*
     * @brief: cursor
     */
    enum
    {
        CURSOR_TYPE_ARROW     = 0x00000001,
        CURSOR_TYPE_HAND      = 0x00000002
    };

    /*
     * @brief: state
     */
    enum ActionState
    {
        ACTION_STATE_NORMAL     = 0x00000001,
        ACTION_STATE_HOVER      = 0x00000002,
        ACTION_STATE_DOWN       = 0x00000004
    };

}


#endif